///////////////////////////////////////////////////////////////////////////////
// Project: Hoyo Client Game
//
// hy_copy_db_logic.cpp
// Created: 2013-8-9
// Author: Like Cheng
///////////////////////////////////////////////////////////////////////////////

#include "hy_copy_db_logic.h"

#include "hy_battle_system/hy_copy_data/hy_server_copy_data.h"

#include "hy_battle_system/hy_monster_data/hy_server_monster_data.h"
#include "hy_battle_system/hy_monster_group_data/hy_server_monster_group_data.h"

#include "hy_db/hy_db_logic.h"
#include "hy_db/hy_db_const.h"


hy_copy_db_logic* hy_copy_db_logic_instance = NULL;
///////////////////////////////////////////////////////////////////////////////
//hy_copy_db_logic::hy_copy_db_logic
///////////////////////////////////////////////////////////////////////////////
hy_copy_db_logic::hy_copy_db_logic()
{

}
///////////////////////////////////////////////////////////////////////////////
//hy_copy_db_logic::~hy_copy_db_logic
///////////////////////////////////////////////////////////////////////////////
hy_copy_db_logic::~hy_copy_db_logic()
{

}
///////////////////////////////////////////////////////////////////////////////
//hy_copy_db_logic::instance
///////////////////////////////////////////////////////////////////////////////
hy_copy_db_logic* hy_copy_db_logic::instance()
{
	if( hy_copy_db_logic_instance == NULL )
		hy_copy_db_logic_instance = new hy_copy_db_logic;
	return hy_copy_db_logic_instance;
}
///////////////////////////////////////////////////////////////////////////////
//hy_copy_db_logic::purge_instance
///////////////////////////////////////////////////////////////////////////////
void hy_copy_db_logic::purge_instance()
{
	DEL_POINTER( hy_copy_db_logic_instance );
}
///////////////////////////////////////////////////////////////////////////////
//hy_copy_db_logic::load_copy_data
///////////////////////////////////////////////////////////////////////////////
bool hy_copy_db_logic::load_copy_data()
{
	std::string table = HY_DB_AND( HY_DB, HY_SERVER_TABLE_COPY );

	mongo::BSONObjBuilder con;
	Json::Value return_val; 
	if( !hy_db_logic::instance(DS)->load_collection_data( con, table.c_str(), return_val ) )
		return false;

	for( Json::Value::iterator it = return_val.begin(); it != return_val.end(); it++ )
	{
		Json::Value& v = *it;

		int id		= v["id"].asInt();
		std::string cname = v["cname"].asString();
		std::string ename = v["ename"].asString();

		hy_server_copy_data* d = new hy_server_copy_data;
		d->init();
		d->set_id( id );
		d->set_json_value( v );
		d->parse_data();

		hy_server_copy_mgr::instance()->add_server_copy_data( d, true );
	}	

	return true;
}